package com.pudding.time;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * @Author Pudding
 * @Date 2025/3/21 16:13
 */
public class DateTimeExample {
    public static void main(String[] args) {
        fun4();
    }

    /**
     * 测试Date类的使用
     */
    public static void fun(){
        // 获取当前时间
        Date date = new Date();
        System.out.println("当前时间：" + date);

        // 格式化时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = sdf.format(date);
        System.out.println("格式化后的时间：" + formattedDate);
    }

    /**
     * 测试LocalDate类的使用
     */
    public static void fun2(){
        // 获取当前日期
        LocalDate today = LocalDate.now();
        System.out.println("当前日期：" + today);

        // 指定日期
        LocalDate birthday = LocalDate.of(1995, 5, 23);
        System.out.println("生日：" + birthday);

        // 计算一周后
        LocalDate nextWeek = today.plusDays(7);
        System.out.println("一周后的日期：" + nextWeek);
    }

    /**
     * 测试LocalTime类的使用
     */
    public static void fun3(){
        // 获取当前时间
        LocalTime now = LocalTime.now();
        System.out.println("当前时间：" + now);

        // 指定时间
        LocalTime fixedTime = LocalTime.of(14, 30, 0);
        System.out.println("指定时间：" + fixedTime);

        // 计算30分钟后
        LocalTime later = now.plusMinutes(30);
        System.out.println("30分钟后的时间：" + later);
    }

    /**
     * 测试LocalDateTime类的使用
     */
    public static void fun4(){
        // 获取当前日期时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println("当前日期时间：" + now);

        // 指定日期时间
        LocalDateTime specificDateTime = LocalDateTime.of(2025, 3, 21, 14, 30, 0);
        System.out.println("指定日期时间：" + specificDateTime);

        // 加减时间
        LocalDateTime future = now.plusDays(10).plusHours(5);
        System.out.println("未来时间：" + future);

        // 格式化输出
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = now.format(formatter);
        System.out.println("格式化日期时间：" + formattedDateTime);
    }
}
